home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / ov143b.zip / GRABBRK.ASM < prev    next >
Assembly Source File  |  1993-01-04  |  2KB  |  74 lines

  1.         PAGE   60,132
  2.         TITLE  Grab Control-Break, Control-C interrupts
  3.  
  4. ;  001  12-Oct-86  grabbrk.asm
  5.  
  6. ;       Copyright (c) 1986 by Blue Sky Software.  All rights reserved.
  7.  
  8.  
  9. _TEXT   SEGMENT  BYTE PUBLIC 'CODE'
  10. _TEXT   ENDS
  11. CONST   SEGMENT  WORD PUBLIC 'CONST'
  12. CONST   ENDS
  13. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  14. _BSS    ENDS
  15. _DATA   SEGMENT  WORD PUBLIC 'DATA'
  16. _DATA   ENDS
  17.  
  18. DGROUP  GROUP   CONST,  _BSS,   _DATA
  19.         ASSUME  CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  20.  
  21. _DATA   SEGMENT
  22.         brkflgp dw    0           ; address of int set NZ when ^Break/^C
  23. _DATA   ENDS
  24.  
  25. _TEXT   SEGMENT
  26.  
  27. ;
  28. ;  grabbrk(brkflgp)
  29. ;
  30. ;     grabbrk gets called once.  It takes over the DOS Control-Break,
  31. ;     Control-C interrupt vector.  Whenever a ^Break/^C interrupt is
  32. ;     signaled, grabbrk sets the int pointed to by brkflagp to a NZ value.
  33.  
  34.         PUBLIC _grabbrk
  35.  
  36. _grabbrk PROC   NEAR
  37.         push    bp
  38.         mov     bp,sp
  39.         push    ds
  40.  
  41.         mov     ax,[bp+4]              ; save address of brkflag
  42.         mov     brkflgp,ax
  43.  
  44.         mov     ax,2523h               ; set interrupt vector 23 to our routine
  45.         push    cs
  46.         pop     ds
  47.         mov     dx,offset intrtn
  48.         int     21h
  49.  
  50.         pop     ds
  51.         mov     sp,bp                  ; back to C pgm
  52.         pop     bp
  53.         ret
  54.  
  55. _grabbrk ENDP
  56.  
  57.  
  58. ;  intrtn  - interrupt routine which gets control by ^Break/^C
  59.  
  60. intrtn  PROC    FAR
  61.  
  62.         push    bx                     ; must save all changed regs
  63.  
  64.         mov     bx,brkflgp             ; get address of brkflag
  65.         mov     word ptr [bx],1        ; set brkflag to NZ
  66.  
  67.         pop     bx                     ; back to DOS (?)
  68.         iret
  69.  
  70. intrtn  ENDP
  71.  
  72. _TEXT   ENDS
  73.         END
  74.